#!/usr/bin/python
# -*- coding: utf-8 -*-

# Модуль для обновления списка игр

from DbShell import Db
import time, Loader

db = Db()

def storeGameList(gameList, domain):
    cdate = time.strftime("%Y-%m-%d %H:%M:%S")
    successCount = 0
    for item in gameList:
        #print item['gameName']
        gameName = unicode(db.escape(item['gameName']),"utf-8").encode('utf-8')
        q = "INSERT INTO enlab_games (`game_id`,`game_name`,`game_date`,`game_num`,`game_domain`,`game_type`,`game_zone`,`added`)\
        VALUES (%s,%s,%s,%s,%s,%s,%s,%s)"
        res = db.query(q,(item['gameID'],gameName,item['gameDate'],item['gameNumber'],domain,item['gameType'],item['gameZone'],cdate)) # Если страны нет в БД, она добавится, иначе возникнет исключение
        if(res == 0): # Сохранение без ошибок (= новая игра в списке)
            successCount += 1
        elif(res == 1062): # Если ошибка дублирования записи: такой элемент уже есть в БД
            pass
        else:
            print "while adding EN_GAME '%s' MySQL report an ERROR № %d" % (item['gameID'],res)
    cdate = time.strftime("%Y-%m-%d %H:%M:%S")
    q = "UPDATE en_domains SET `updated`='%s' WHERE `domain_name`='%s'" % (cdate,domain)
    res = db.query(q)
    return successCount

log = "STARTED at %s" % (time.strftime("%Y-%m-%d %H:%M:%S"), )

fastUpdate = True
if fastUpdate == True:
    q = "SELECT domain_name FROM en_domains WHERE (`updated` IS NULL) OR (DATEDIFF(NOW(),`updated`) > 2) ORDER BY `updated`"
else:
    q = "SELECT domain_name FROM en_domains ORDER BY `updated`"

try:
	db.query(q)
	domains = db.fetchall()
	log = log + ("* %d domains need update:\n" %(len(domains),))
	for d in domains:
		domain = d[0]
		log = log +  "fetching %s games \n" % (domain,)
		Loader.fast = fastUpdate # флаг Быстрого обновления (качать только первую страницу списка игр)
		games = Loader.getGames(domain)
		if games != None:
			successCount = storeGameList(games, domain)
			log = log + str(successCount) + " saved\n"
		else:
			log = log + " nothing to save\n"
except Exception, e:
	print e
	print "Detailed log:\n", log